<?php

/**
 * rayon actions.
 *
 * @package    appcemhti
 * @subpackage rayon
 * @author     Steve Cancès
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class rayonActions extends sfActions
{
    
    protected function droitLecture()
    {
        $droitUtilisateur = $this->lot->idDroitSurLot($this->getUser()->getGuardUser()->getId());
        $this->forwardUnless($droitUtilisateur == 3 || $droitUtilisateur == 2, 'sfGuardAuth', 'secure');
    }
    
    protected function droitEcriture()
    {
        $droitUtilisateur = $this->lot->idDroitSurLot($this->getUser()->getGuardUser()->getId());
        $this->forwardUnless($droitUtilisateur == 3, 'sfGuardAuth', 'secure');
    }

    public function executeNew(sfWebRequest $request)
    {
        $this->forward404Unless($this->faisceau = Doctrine_Core::getTable('faisceau')->find(array($request->getParameter('id_faisceau'))), sprintf('Object faisceau does not exist (%s).', $request->getParameter('id_faisceau')));
        
        $this->lot = $this->faisceau->getTraitement()->getLotParent();
        // On vérifie que l'utilisateur a les droits d'écriture sur le lot concerné
        $this->droitEcriture();
        
        $this->form = new rayonForm();
    }

    public function executeCreate(sfWebRequest $request)
    {
        $this->forward404Unless($request->isMethod(sfRequest::POST));
        $this->forward404Unless($this->faisceau = Doctrine_Core::getTable('faisceau')->find(array($request->getParameter('id_faisceau'))), sprintf('Object faisceau does not exist (%s).', $request->getParameter('id_faisceau')));
        
        $this->lot = $this->faisceau->getTraitement()->getLotParent();
        // On vérifie que l'utilisateur a les droits d'écriture sur le lot concerné
        $this->droitEcriture();

        $this->form = new rayonForm();
        
        $params = $request->getParameter($this->form->getName());
        $params['id_traitement'] = $this->faisceau->getIdTraitement();
        $request->setParameter($this->form->getName(), $params);

        $this->processForm($request, $this->form);

        $this->setTemplate('new');
    }

    public function executeEdit(sfWebRequest $request)
    {
        $this->forward404Unless($this->rayon = Doctrine_Core::getTable('rayon')->find(array($request->getParameter('id_rayon'))), sprintf('Object rayon does not exist (%s).', $request->getParameter('id_rayon')));
        $this->faisceau = $this->rayon->getFaisceau();
        
        $this->lot = $this->faisceau->getTraitement()->getLotParent();
        // On vérifie que l'utilisateur a les droits d'écriture sur le lot concerné
        $this->droitEcriture();
        
        $this->form = new rayonForm($this->rayon);
    }

    public function executeUpdate(sfWebRequest $request)
    {
        $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
        $this->forward404Unless($this->rayon = Doctrine_Core::getTable('rayon')->find(array($request->getParameter('id_rayon'))), sprintf('Object rayon does not exist (%s).', $request->getParameter('id_rayon')));
        
        $this->lot = $this->rayon->getFaisceau()->getTraitement()->getLotParent();
        // On vérifie que l'utilisateur a les droits d'écriture sur le lot concerné
        $this->droitEcriture();
        
        $this->form = new rayonForm($this->rayon);
        
        $params = $request->getParameter($this->form->getName());
        $params['id_traitement'] = $this->rayon->getIdTraitement();
        $request->setParameter($this->form->getName(), $params);

        $this->processForm($request, $this->form);

        $this->setTemplate('edit');
    }

    public function executeDelete(sfWebRequest $request)
    {
        //$request->checkCSRFProtection();

        $this->forward404Unless($this->rayon = Doctrine_Core::getTable('rayon')->find(array($request->getParameter('id_rayon'))), sprintf('Object rayon does not exist (%s).', $request->getParameter('id_rayon')));
        
        $this->lot = $this->rayon->getFaisceau()->getTraitement()->getLotParent();
        // On vérifie que l'utilisateur a les droits d'écriture sur le lot concerné
        $this->droitEcriture();
        $idTraitement = $this->rayon->getIdTraitement();
        $this->rayon->delete();

        $this->redirect('traitement/show?id_traitement='.$idTraitement);
    }

    protected function processForm(sfWebRequest $request, sfForm $form)
    {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        if ($form->isValid())
        {
            $rayon = $form->save();

            $this->redirect('traitement/show?id_traitement='.$rayon->getIdTraitement());
        }
    }
}
